import Taro from '@tarojs/taro'

/**
 * 上传图片到服务器
 * @param filePath 本地文件路径
 * @returns Promise<string> 返回上传后的图片URL
 */
export const uploadImage = async (filePath: string): Promise<string> => {
  try {
    // 实际项目中应该上传到服务器
    // const res = await Taro.uploadFile({
    //   url: 'https://your-api.com/upload',
    //   filePath: filePath,
    //   name: 'file',
    //   header: {
    //     'Content-Type': 'multipart/form-data'
    //   }
    // })
    
    // 模拟上传成功，返回本地路径
    console.log('模拟上传图片:', filePath)
    return filePath
  } catch (error) {
    console.error('上传图片失败:', error)
    throw new Error('上传图片失败')
  }
}

/**
 * 选择并上传头像
 * @returns Promise<string> 返回头像URL
 */
export const chooseAndUploadAvatar = async (): Promise<string> => {
  try {
    // 优先使用 chooseMedia API（微信小程序基础库 2.10.0 开始支持）
    const res = await Taro.chooseMedia({
      count: 1,
      mediaType: ['image'],
      sourceType: ['album', 'camera'],
      camera: 'back'
    })

    if (res.tempFiles && res.tempFiles.length > 0) {
      const tempFilePath = res.tempFiles[0].tempFilePath
      
      // 上传图片
      const uploadedUrl = await uploadImage(tempFilePath)
      return uploadedUrl
    }
    
    throw new Error('未选择图片')
  } catch (error: any) {
    console.error('chooseMedia 失败，尝试降级使用 chooseImage:', error)
    
    // 降级使用 chooseImage
    try {
      const res = await Taro.chooseImage({
        count: 1,
        sizeType: ['compressed'], // 使用压缩图
        sourceType: ['album', 'camera']
      })
      
      if (res.tempFilePaths && res.tempFilePaths.length > 0) {
        const tempFilePath = res.tempFilePaths[0]
        
        // 上传图片
        const uploadedUrl = await uploadImage(tempFilePath)
        return uploadedUrl
      }
      
      throw new Error('未选择图片')
    } catch (fallbackError) {
      console.error('chooseImage 也失败:', fallbackError)
      throw new Error('选择图片失败，请重试')
    }
  }
}

/**
 * 获取用户微信信息（需要用户授权）
 * @param desc 获取用户信息的描述
 * @returns Promise<any> 用户信息
 */
export const getUserWechatInfo = async (desc: string = '用于完善用户资料'): Promise<any> => {
  try {
    const userProfile = await Taro.getUserProfile({
      desc: desc
    })
    return userProfile.userInfo
  } catch (error) {
    console.log('用户未授权获取微信用户信息:', error)
    return null
  }
} 